/*
 *  File.h
 *  jscsh
 *
 *  File Constants:
 *    SEPARATOR (native)
 *    Separator (js)
 *    PATH_SEPARATOR (js)
 *    
 *  File Class Methods:
 *    atime(fileName)  => time  (native)
 *    basename(file_name [, suffix]) => base_name  (js)
 *    isBlockdev(file_name) => bool (native)
 *    catname(from, to) => (js)
 *    isChardev(file_name)   (native)
 *    chmod(mode, file_name, ...)  (native)
 *    chown(owner, group, filen_name, ...) (native)
 *    compare(from, to)   (native?)
 *    ctime(file_name)    (native)
 *    delete(file_name)   (js, alias to unlink)
 *    isDirectory(file_name)  (native)
 *    dirname(file_name)  (js)
 *    isExecutable(file_name) (native)
 *    isExecutableReal(file_name) (native)
 *    exists(file_name)   (native)
 *    expandPath(file_name [, dir_string])  (native/js?)
 *    extname(file_name)   (js)
 *    isFile(file_name)    (native)
 *    fileType(file_name)  (native)
 *    isGrpOwned(file_name) (native)
 *    identical(file0, file1) (native)
 *    install(from, to, mode, verbose)  (js?)
 *    join(string, ...)   (js)
 *    lchmod(mode, fileName)  (native/js?)
 *    link(old_name, new_name)  (native)
 *    lstat(file_name)  (native/js?)
 *    makedirs(dir, ...) (native)
 *    move(from, to, verbose)  (native)
 *    mtime(file_name)  (native)
 *    isOwned(file_name)  (native)
 *    isPipe(file_name)   (native)
 *    isReadable(file_name)  (native)
 *    isReadableReal(file_name) (native)
 *    readlink(linkName)   (native)
 *    rename(old, new)   (native)
 *    safeUnlink(file, ...)  (native)
 *    isSetGID(fileName)   (native)
 *    isSetUID(fileName)   (native)
 *    size(fileName)      (native)
 *    isSocket(fileName)  (native)
 *    split(fileName)     (js)
 *    stat(fileName)      (native) //?
 *    symlink(fileName)   (native)
 *    isSymlink(fileName) (native)
 *    syscopy(from, to)   (native)
 *    truncate(filename, size)  (native)
 *    umask([mask])   (native)
 *    unlink(file_name)   (native)
 *    utime(atime, mtime, file_name, ...) (native)
 *    isWritable(fileName)  (native)
 *    isWritableReal(fileName) (native)
 *    isZero(fileName)   (native)
 *    
 *  Public Instance Methods
 *    atime
 *    chmod
 *    chown
 *    ctime
 *    flock
 *    lstat
 *    mtime
 *    path
 *    truncate
 *    
 *
 *  Created by Jonathan Hohle on 1/10/08.
 *  Copyright 2008 hohle.net. All rights reserved.
 *
 */

#include <JavaScriptCore/JavaScriptCore.h>


void File_extendHost(JSContextRef context, JSObjectRef contextGlobalObject);

JSValueRef File_s_atime(JSContextRef context, JSObjectRef object, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception);
JSValueRef File_s_isBlockDev(JSContextRef context, JSObjectRef object, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception);
JSValueRef File_s_isCharDev(JSContextRef context, JSObjectRef object, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception);
JSValueRef File_s_chmod(JSContextRef context, JSObjectRef object, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception);
JSValueRef File_s_chown(JSContextRef context, JSObjectRef object, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception);
JSValueRef File_s_compare(JSContextRef context, JSObjectRef object, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception);
JSValueRef File_s_ctime(JSContextRef context, JSObjectRef object, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception);
JSValueRef File_s_isDirectory(JSContextRef context, JSObjectRef object, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception);
JSValueRef File_s_isExecutable(JSContextRef context, JSObjectRef object, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception);
JSValueRef File_s_isExecutableReal(JSContextRef context, JSObjectRef object, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception);
JSValueRef File_s_exists(JSContextRef context, JSObjectRef object, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception);
JSValueRef File_s_isFile(JSContextRef context, JSObjectRef object, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception);
JSValueRef File_s_fileType(JSContextRef context, JSObjectRef object, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception);
JSValueRef File_s_isGrpOwned(JSContextRef context, JSObjectRef object, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception);
JSValueRef File_s_identical(JSContextRef context, JSObjectRef object, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception);
JSValueRef File_s_link(JSContextRef context, JSObjectRef object, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception);
JSValueRef File_s_makedirs(JSContextRef context, JSObjectRef object, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception);
JSValueRef File_s_move(JSContextRef context, JSObjectRef object, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception);
JSValueRef File_s_mtime(JSContextRef context, JSObjectRef object, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception);
JSValueRef File_s_isOwned(JSContextRef context, JSObjectRef object, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception);
JSValueRef File_s_isPipe(JSContextRef context, JSObjectRef object, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception);
JSValueRef File_s_isReadable(JSContextRef context, JSObjectRef object, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception);
JSValueRef File_s_isReadableReal(JSContextRef context, JSObjectRef object, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception);
JSValueRef File_s_readlink(JSContextRef context, JSObjectRef object, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception);
JSValueRef File_s_rename(JSContextRef context, JSObjectRef object, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception);
JSValueRef File_s_safeUnlink(JSContextRef context, JSObjectRef object, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception);
JSValueRef File_s_isSetGID(JSContextRef context, JSObjectRef object, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception);
JSValueRef File_s_isSetUID(JSContextRef context, JSObjectRef object, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception);
JSValueRef File_s_size(JSContextRef context, JSObjectRef object, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception);
JSValueRef File_s_isSocket(JSContextRef context, JSObjectRef object, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception);
JSValueRef File_s_stat(JSContextRef context, JSObjectRef object, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception);
JSValueRef File_s_isSticky(JSContextRef context, JSObjectRef object, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception);
JSValueRef File_s_symlink(JSContextRef context, JSObjectRef object, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception);
JSValueRef File_s_isSymlink(JSContextRef context, JSObjectRef object, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception);
JSValueRef File_s_syscopy(JSContextRef context, JSObjectRef object, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception);
JSValueRef File_s_truncate(JSContextRef context, JSObjectRef object, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception);
JSValueRef File_s_umask(JSContextRef context, JSObjectRef object, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception);
JSValueRef File_s_unlink(JSContextRef context, JSObjectRef object, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception);
JSValueRef File_s_utime(JSContextRef context, JSObjectRef object, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception);
JSValueRef File_s_isWritable(JSContextRef context, JSObjectRef object, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception);
JSValueRef File_s_isWritableReal(JSContextRef context, JSObjectRef object, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception);
JSValueRef File_s_isZero(JSContextRef context, JSObjectRef object, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception);